gusucode.com > MATLAB神经网络多个案例分析及详细源代码 > 源程序/案例25 广义神经网络的聚类算法-网络入侵聚类/FCMGRNN.m

    web browser http://www.ilovematlab.cn/thread-64642-1-1.html
%% 清空环境文件
clear all;
clc;

%% 提取攻击数据

%攻击样本数据
load netattack;
P1=netattack;
T1=P1(:,39)';
P1(:,39)=[];

%数据大小
[R1,C1]=size(P1);
csum=20;  %提取训练数据多少

%% 模糊聚类
data=P1;
[center,U,obj_fcn] = fcm(data,5);    
for i=1:R1
    [value,idx]=max(U(:,i));
    a1(i)=idx;
end

%% 模糊聚类结果分析
Confusion_Matrix_FCM=zeros(6,6);
Confusion_Matrix_FCM(1,:)=[0:5];
Confusion_Matrix_FCM(:,1)=[0:5]';
for nf=1:5
    for nc=1:5
        Confusion_Matrix_FCM(nf+1,nc+1)=length(find(a1(find(T1==nf))==nc));
    end
end

%% 网络训练样本提取
cent1=P1(find(a1==1),:);cent1=mean(cent1);
cent2=P1(find(a1==2),:);cent2=mean(cent2);
cent3=P1(find(a1==3),:);cent3=mean(cent3);
cent4=P1(find(a1==4),:);cent4=mean(cent4);
cent5=P1(find(a1==5),:);cent5=mean(cent5);

%提取范数最小为训练样本
for n=1:R1;
    ecent1(n)=norm(P1(n,:)-cent1);
    ecent2(n)=norm(P1(n,:)-cent2);
    ecent3(n)=norm(P1(n,:)-cent3);
    ecent4(n)=norm(P1(n,:)-cent4);
    ecent5(n)=norm(P1(n,:)-cent5);
end
for n=1:csum
    [va me1]=min(ecent1);
    [va me2]=min(ecent2);
    [va me3]=min(ecent3);
    [va me4]=min(ecent4);
    [va me5]=min(ecent5);
    ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tcl(n)=1;
    ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;
    ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;
    ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;
    ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;
end
P2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tcl,tc2,tc3,tc4,tc5];
k=0;

%% 迭代计算
for nit=1:10%开始迭代
    
    %% 广义神经网络聚类
    net = newgrnn(P2',T2,50);   %训练广义网络
    
    a2=sim(net,P1') ;  %预测结果
    %输出标准化(根据输出来分类)
    a2(find(a2<=1.5))=1;
    a2(find(a2>1.5&a2<=2.5))=2;
    a2(find(a2>2.5&a2<=3.5))=3;
    a2(find(a2>3.5&a2<=4.5))=4;
    a2(find(a2>4.5))=5;
    
    %% 网络训练数据再次提取
    cent1=P1(find(a2==1),:);cent1=mean(cent1);
    cent2=P1(find(a2==2),:);cent2=mean(cent2);
    cent3=P1(find(a2==3),:);cent3=mean(cent3);
    cent4=P1(find(a2==4),:);cent4=mean(cent4);
    cent5=P1(find(a2==5),:);cent5=mean(cent5);
    
    for n=1:R1%计算样本到各个中心的距离
        ecent1(n)=norm(P1(n,:)-cent1);
        ecent2(n)=norm(P1(n,:)-cent2);
        ecent3(n)=norm(P1(n,:)-cent3);
        ecent4(n)=norm(P1(n,:)-cent4);
        ecent5(n)=norm(P1(n,:)-cent5);
    end
    
    %选择离每类中心最近的csum个样本
    for n=1:csum
        [va me1]=min(ecent1);
        [va me2]=min(ecent2);
        [va me3]=min(ecent3);
        [va me4]=min(ecent4);
        [va me5]=min(ecent5);
        ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tc1(n)=1;
        ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;
        ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;
        ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;
        ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;
    end
    
    p2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tc1,tc2,tc3,tc4,tc5];

    %统计分类结果
    Confusion_Matrix_GRNN=zeros(6,6);
    Confusion_Matrix_GRNN(1,:)=[0:5];
    Confusion_Matrix_GRNN(:,1)=[0:5]';
    for nf=1:5
        for nc=1:5
            Confusion_Matrix_GRNN(nf+1,nc+1)=length(find(a2(find(T1==nf))==nc));
        end
    end
    
    pre2=0;
    
    for n=2:6;
        pre2=pre2+max(Confusion_Matrix_GRNN(n,:));
    end
    
    pre2=pre2/R1*100;

end

%% 结果显示
Confusion_Matrix_FCM

Confusion_Matrix_GRNN

web browser http://www.ilovematlab.cn/thread-64642-1-1.html